// LocalStorageImpl 实现了 IStorage 接口，封装了对浏览器 localStorage 的常用操作
// 该类用于统一管理本地存储，便于维护和扩展
import type { IStorage } from '../types';

/** LocalStorageImpl 类 实现了 IStorage 接口，封装 localStorage 的常用操作 */
class LocalStorageImpl implements IStorage {
  /**
   * 设置指定 key 的值
   *
   * @param key 键名，字符串类型
   * @param value 键值，字符串类型
   * @returns 无返回值
   */
  setItem(key: string, value: string): void {
    localStorage.setItem(key, value);
  }

  /**
   * 获取指定 key 的值
   *
   * @param key 键名，字符串类型
   * @returns 对应的字符串值或 null
   */
  getItem(key: string): string | null {
    return localStorage.getItem(key);
  }

  /**
   * 移除指定 key 的数据
   *
   * @param key 键名，字符串类型
   * @returns 无返回值
   */
  removeItem(key: string): void {
    localStorage.removeItem(key);
  }

  /**
   * 清空所有 localStorage 数据
   *
   * @returns 无返回值
   */
  clear(): void {
    localStorage.clear();
  }

  /**
   * 判断指定 key 是否存在
   *
   * @param key 键名，字符串类型
   * @returns 存在返回 true，否则返回 false
   */
  keyExists(key: string): boolean {
    return localStorage.getItem(key) !== null;
  }
}

export default LocalStorageImpl;
